import fs from 'fs'

// 基于 Promise 的读取文件方法
function myGetFile(path) {
    // a.将 读取文件过程 封装成 异步任务
    return new Promise(function (resolve, reject) {
        // b.异步读取 文件
        fs.readFile(path, 'utf-8', (err, content) => {
            // b1.如果读取失败，则调用 失败回调函数
            if (err) return reject('读取失败')
            // b.2如果读取成功，则调用 成功回调函数
            resolve(content)
        })
    })
}

// // 调用函数，读取文件
// myGetFile('./assets/1.txt')
//     .then(function (content) {
//         console.log(content)
//     }).catch(function (err) {
//         console.log(err)
//     })

// console.log('-------------顺序读取多个文件------------')
// 读取1.txt
myGetFile('./assets/1.txt')
    .then((content) => {
        console.log(content)
        return myGetFile('./assets/2.txt')
    }).then((content) => {
        console.log(content)
        return myGetFile('./assets/3.txt')
    }).then((c) => {
        console.log(c)
        return '讨厌，你怎么才来~！'
    }).then((res) => {
        console.log(res)
    }).catch((err) => {
        console.log('出错啦：', err)
    }).finally(s => {
        console.log('finally', s)
    })


console.log('-------------async/await关键字 顺序读取多个文件------------')
// 读取1.txt
async function test() {
    try {
        const r1 = await myGetFile('./assets/1.txt')
        console.log(r1)
        const r2 = await myGetFile('./assets/32.txt')
        console.log(r2)
        const r3 = await myGetFile('./assets/3.txt')
        console.log(r3)
    } catch (error) {
        console.log('报错了', error)
    }
}
test()

// try {
//     console.log(o.a)
// } catch (error) {
//     console.log(error.message)
// }
// console.log('抱错啦-------------')